package com.ruoyi.gqgl.rdb.controller;

import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.tongyi.TongYi;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.gqgl.rdb.domain.PSRDBhCk;
import com.ruoyi.gqgl.rdb.domain.Rdb;
import com.ruoyi.gqgl.rdb.domain.RdbFj;
import com.ruoyi.gqgl.rdb.service.IRdbService;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;


/**
 * RDController
 *
 * @author huacai
 * @date 2025-01-23
 */
@RestController
@RequestMapping("/gqgl/rdb")
public class RdbController extends BaseController {
    @Resource
    private IRdbService rdbService;

    /**
     * 查询RD列表
     */
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:list')")
    @GetMapping("/list")
    public TableDataInfo list(Rdb rdb) {
        startPage();
        List<Rdb> list = rdbService.selectRdbList(rdb);
        return getDataTable(list);
    }

    /**
     * 导出RD列表
     */
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:export')")
    @Log(title = "RD", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, Rdb rdb) {
        List<Rdb> list = rdbService.selectRdbList(rdb);
        ExcelUtil<Rdb> util = new ExcelUtil<Rdb>(Rdb.class);
        util.exportExcel(response, list, "RD数据");
    }

    /**
     * 下载模板
     */
    @PostMapping("/importTemplate")
    public void importTemplate(HttpServletResponse response) {
        ExcelUtil<Rdb> util = new ExcelUtil<Rdb>(Rdb.class);
        util.importTemplateExcel(response, "RD数据");
    }

    /**
     * 导入数据
     */
    @Log(title = "RD", businessType = BusinessType.IMPORT)
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:import')")
    @PostMapping("/importData")
    public AjaxResult importData(MultipartFile file) throws Exception {
        ExcelUtil<Rdb> util = new ExcelUtil<Rdb>(Rdb.class);
        InputStream inputStream = file.getInputStream();
        List<Rdb> list = util.importExcel(inputStream);
        inputStream.close();
        int count = rdbService.batchInsertRdb(list);
        return AjaxResult.success("导入成功" + count + "条信息！");
    }

    /**
     * 获取RD详细信息
     */
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:query')")
    @GetMapping(value = "/{rdbId}")
    public AjaxResult getInfo(@PathVariable("rdbId") String rdbId) {
        return success(rdbService.selectRdbByRdbId(rdbId));
    }

    /**
     * 新增RD
     */
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:add')")
    @Log(title = "RD", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@Validated @RequestBody Rdb rdb) {
        return toAjax(rdbService.insertRdb(rdb));
    }

    /**
     * 修改RD
     */
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:edit')")
    @Log(title = "RD", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody Rdb rdb) {
        return toAjax(rdbService.updateRdb(rdb));
    }

    /**
     * 删除RD
     */
    @PreAuthorize("@ss.hasPermi('gqgl:rdb:remove')")
    @Log(title = "RD", businessType = BusinessType.DELETE)
    @DeleteMapping("/{rdbIds}")
    public AjaxResult remove(@PathVariable String[] rdbIds) {
        return toAjax(rdbService.deleteRdbByRdbIds(rdbIds));
    }

    /**
     * AI优化
     */
    @GetMapping(value = "/getAIToRd/{message}")
    public AjaxResult getAIToRd(@PathVariable("message") String message) throws IOException {
        String res = TongYi.getTongYi(message, "sk-1d75302a854a4fd2a7d87d84cbe54434");
        return success(res);
    }

    /**
     * 获得RD表主键ID (UUID)
     */
    @GetMapping("/getRDbId")
    public AjaxResult getRDbId() {
        String getRDbId = IdUtils.fastSimpleUUID();
        return success(getRDbId);
    }

    /**
     * 新增附件
     */
    @PostMapping("/add/File/By/subId")
    public AjaxResult insertRdbFjByRdbId(@RequestBody RdbFj rdbFj) {
        return toAjax(rdbService.insertRdbFjByRdbId(rdbFj));
    }

    /**
     * 根据ID查询附件列表
     */
    @GetMapping("/get/FileList/By/subId")
    public AjaxResult selectRdbFjList(String sId, String fileType) {
        RdbFj rdbFj = new RdbFj();
        rdbFj.setRdbId(sId);
        rdbFj.setFileType(fileType);
        return AjaxResult.success(rdbService.selectRdbFjList(rdbFj));
    }

    /**
     * 删除RB附件
     */
    @Log(title = "RB附件", businessType = BusinessType.DELETE)
    @DeleteMapping("/fj/{fjIds}")
    public AjaxResult deleteRdbFjByFjIds(@PathVariable Integer[] fjIds) {
        return toAjax(rdbService.deleteRdbFjByFjIds(fjIds));
    }

    /**
     * PS/RD编号查看
     */
    @GetMapping("/selectPSRDBh")
    public TableDataInfo selectPSRDBh(PSRDBhCk psrdBhCk) {
        startPage();
        List<PSRDBhCk> list = rdbService.selectPSRDBh(psrdBhCk);
        return getDataTable(list);
    }

    /**
     * 导出PS/RD编号列表
     */
    @Log(title = "PSRD", businessType = BusinessType.EXPORT)
    @PostMapping("/exportPSRD")
    public void exportPSRD(HttpServletResponse response, PSRDBhCk psrdBhCk) {
        List<PSRDBhCk> list = rdbService.selectPSRDBh(psrdBhCk);
        ExcelUtil<PSRDBhCk> util = new ExcelUtil<PSRDBhCk>(PSRDBhCk.class);
        util.exportExcel(response, list, "PSRD编号数据");
    }

//    public static void main(String[] args) {
//        String fwb = "<p style=\\\"text-align: start;\\\">1、立项目的</p><p style=\\\"text-align: start;\\\">通过对以色列克卡夫哈</p><p style=\\\"text-align: start;\\\">亚邓项目超深竖井正井法施工进行研究，减少高压竖井施工难度，提高施工安全系数，有效减少地质因素带来的施工影响，提高经济效益，形成一整套超深竖井正井法施工的施工方法，为今后公司在同类深竖井施工提供可借鉴经验。</p><p style=\\\"text-align: start;\\\">2、组织实施方式</p><p style=\\\"text-align: start;\\\">本项目采用自主研发的方式，企业自筹资金进行研发，该项目于2017年1月立项，由教授级高级工程师杨玉银作为项目负责人，高级工程师梁勇、代强作为技术负责人，技术中心组织，项目部配合实施。公司保证充足的资金投入及试验场地、研发设备，已确保项目的顺利实施，并采取一定的激励措施对研发人员进行奖励。</p><p><br></p>";
//        // 使用Jsoup解析HTML
//        Document doc = Jsoup.parse(fwb);
//
//        // 获取所有的<p>标签
//        Elements paragraphs = doc.select("p");
//
//        // 使用StringBuilder拼接文本
//        StringBuilder text = new StringBuilder();
//
//        // 遍历每个<p>标签，提取文本并添加换行符
//        for (Element paragraph : paragraphs) {
//            text.append(paragraph.text()).append("\n"); // 添加段落文本和换行符
//        }
//
//        // 输出结果
//        System.out.println(text.toString());
//
//    }

}
